package com.itheima.d9_interface_attention;
/*
接口其他注意事项（了解）
1、类实现多个接口或者接口继承多个接口，如果多个接口中存在相同方法，子类型要重写该方法。
2、一个类继承了父类，又同时实现了接口，父类中和接口中有相同声明的方法，实现类会使用父类方法。

 */
public class Demo {
    public static void main(String[] args) {

        Cat c = new Cat();
        c.show();//animal show!! 父类中的方法执行
    }
}


interface X{
    default void test1(){
        System.out.println("我是来自X接口的方法");
    }

    void test2();
}
interface Y{
    default void test1(){
        System.out.println("我是来自Y接口的方法");
    }

    void test2();
}

interface Z extends X,Y{
    //如果多个父接口中存在相同的默认方法，子接口必定要进行重写。
    //如果多个父接口中存在相同的抽象方法，子接口中也可以去使用默认方法重写，也可以不动保持原来的抽象方法。
    @Override
    default void test1() {
        //X.super.test1();//保留X的test1逻辑
        //Y.super.test1();//保留Y的test1逻辑
        System.out.println("我是来自Z接口的方法");
    }
    default void test2(){
        //重写了父类型中的抽象方法
    }
}

class Animal{
    public void show(){
        System.out.println("animal show!!");
    }
}

interface Show{
    default void show(){
        System.out.println("show show!!");
    }
}
//如果一个类要同时继承一个父类实现一个接口，继承要写在实现的前面。
class Cat extends Animal implements Show{

}